﻿namespace MicroCloud.Database
{
    /// <summary>
    /// 数据库对象处理器接口
    /// </summary>
    public interface IDataBaseHandler : IHash
    {
        #region 属性
        /// <summary>
        /// 获取 初始化的顺序编号
        /// </summary>
        decimal OrderNo { get; }
        
        /// <summary>
        /// 获取 是否应用所有的数据上下文
        /// <para>默认 false，如果为 true，则忽略 DbContextTypes 属性。</para>
        /// </summary>
        bool AllDbContext { get; }
        
        /// <summary>
        /// 获取 所属的数据上下文类型集合
        /// <para>如集合为空且 AllDbContext 为 false 时，将使用默认上下文，否则使用指定类型的上下文类型。</para>
        /// </summary>
        Type[] DbContextTypes { get; }

        /// <summary>
        /// 获取 是否删除
        /// <para>默认 false，如果为 true，则执行删除操作。</para>
        /// </summary>
        bool Deleted { get; }

        /// <summary>
        /// 获取 数据上下文的配置信息
        /// </summary>
        Dictionary<Type, DbContextOption> DbContextOptions { get; }

        /// <summary>
        /// 获取 名称
        /// </summary>
        Dictionary<DatabaseType, string> Names { get; }

        /// <summary>
        /// 获取 是否存在脚本
        /// </summary>
        Dictionary<DatabaseType, string> ExistScripts { get; }

        /// <summary>
        /// 获取 创建脚本
        /// </summary>
        Dictionary<DatabaseType, string> CreateScripts { get; }

        /// <summary>
        /// 获取 更新脚本
        /// </summary>
        Dictionary<DatabaseType, string> UpdateScripts { get; }

        /// <summary>
        /// 获取 删除脚本
        /// </summary>
        Dictionary<DatabaseType, string> DeleteScripts { get; }

        #endregion

    }

}
